package hr

import (
	"service/api/hr/contract"
	"service/api/hr/group"
	"service/api/hr/login"
	"service/api/hr/post"
	"service/api/hr/role"
	"service/api/hr/staff"
	"service/ctrl"
	"service/model/mod"

	"gitee.com/cloudapex/ulern/htp"
	"github.com/gin-gonic/gin"
)

func init() {
	ctrl.Svr.RegistRouter(func(r *gin.Engine) {
		g := r.Group("hr")

		contractRouter(g)
		groupRouter(g)
		loginRouter(g)
		postRouter(g)
		roleRouter(g)
		staffRouter(g)
		toolRouter(g)
	})
}

func contractRouter(r *gin.RouterGroup) {
	gr := r.Group("contract")
	gr.Use(htp.MH_JWTAuthed(mod.MH_AUTH))
	// gr.Use(permit.MH_Permit(mod.RDB(mod.ERDB_Permt), conf.Main.AdminIds()))
	gr.POST("getContractList", // 获取员工合同列表信息
		func(c *gin.Context) { htp.Service(c, &contract.ContractList{}) })
	gr.POST("setContract", // 修改员工合同列表信息
		func(c *gin.Context) { htp.Service(c, &contract.UpdateContract{}) })
	gr.POST("getSocialList", // 获取员工社保列表信息
		func(c *gin.Context) { htp.Service(c, &contract.SocialList{}) })
	gr.POST("setSocial", // 修改员工社保信息
		func(c *gin.Context) { htp.Service(c, &contract.UpdateSocial{}) })
	gr.GET("quitStaffList", // 员工离职列表
		func(c *gin.Context) { htp.Service(c, &contract.StaffQuitList{}) })
	gr.POST("setRegStatus", // 重置員工未登記状态
		func(c *gin.Context) { htp.Service(c, &contract.SetRegStatus{}) })
	gr.GET("topAnalysisCount", // 获取题干离职次数
		func(c *gin.Context) { htp.Service(c, &contract.TopLibList{}) })
	gr.GET("selAnalysisCount", // 获取选项离职次数
		func(c *gin.Context) { htp.Service(c, &contract.TopLibSelectList{}) })
}
func groupRouter(r *gin.RouterGroup) {
	gr := r.Group("user")
	gr.Use(htp.MH_JWTAuthed(mod.MH_AUTH))
	// gr.Use(permit.MH_Permit(mod.RDB(mod.ERDB_Permt), conf.Main.AdminIds()))
	gr.POST("addGroup", // 添加组织架构信息
		func(c *gin.Context) { htp.Service(c, &group.GroupAdd{}) })
	gr.POST("delGroup", // 删除组织架构信息
		func(c *gin.Context) { htp.Service(c, &group.GroupDel{}) })
	gr.GET("sonGroupList", //当前架构下子类
		func(c *gin.Context) { htp.Service(c, &group.GroupSon{}) })
	gr.GET("getGroup", //当前架构下子类
		func(c *gin.Context) { htp.Service(c, &group.GroupGet{}) })
	gr.POST("moveGroup", // 删除组织架构信息
		func(c *gin.Context) { htp.Service(c, &group.MoveGroup{}) })
	gr.POST("setGroup", //修改组织名称
		func(c *gin.Context) { htp.Service(c, &group.GroupSet{}) })
	gr.GET("getPoolCount", //离职分析
		func(c *gin.Context) { htp.Service(c, &staff.GetPoolCount{}) })
	gr.POST("changGroup", //更换组织架构
		func(c *gin.Context) { htp.Service(c, &group.ChangeGroup{}) })
	gr.POST("exportStaff", //导出花名册信息
		func(c *gin.Context) { htp.Service(c, &group.StaffList{}) })
	gr.POST("changeGroupLog", //修改组织架构记录
		func(c *gin.Context) { htp.Service(c, &group.ChangeGroupLog{}) })
}
func loginRouter(r *gin.RouterGroup) {
	gr := r.Group("login")
	//gr.Use(htp.MH_JWTAuthed(mod.MH_AUTH))
	// //gr.Use(permit.MH_Permit(mod.RDB(mod.ERDB_Permt), conf.Main.AdminIds()))

	// 拆分为独立的登陆服务
	gr.POST("quickLogin", // 登陆
		func(c *gin.Context) { htp.Service(c, &login.UserLogin{}) })

	gr.GET("queryPhone", // 手机号查询当前员工
		func(c *gin.Context) { htp.Service(c, &login.QueryPhone{}) })
	gr.POST("queryStaffInfo", // 员工基本信息入库
		func(c *gin.Context) { htp.Service(c, &login.StaffHrDetail{}) })
	gr.GET("quitTopList", // 员工离职做题列表
		func(c *gin.Context) { htp.Service(c, &contract.QuitToplibList{}) })
	gr.POST("quitTopCommit", // 员工离职做题提交
		func(c *gin.Context) { htp.Service(c, &contract.QuitToplibCommit{}) })
	gr.GET("queryStaffList", // queryStaffList
		func(c *gin.Context) { htp.Service(c, &login.QueryStaffList{}) })
	gr.GET("queryStaffNoConnList", // hr/login/queryStaffNoConnList
		func(c *gin.Context) { htp.Service(c, &login.QueryStaffNoConnList{}) })
}
func postRouter(r *gin.RouterGroup) {
	gr := r.Group("post")
	gr.Use(htp.MH_JWTAuthed(mod.MH_AUTH))
	// gr.Use(permit.MH_Permit(mod.RDB(mod.ERDB_Permt), conf.Main.AdminIds()))
	gr.POST("addPostFrame", // 添加岗位结构
		func(c *gin.Context) { htp.Service(c, &post.PostFrameAdd{}) })
	gr.POST("delPostFrame", // 删除岗位结构
		func(c *gin.Context) { htp.Service(c, &post.PostFrameDel{}) })
	gr.GET("listPostFrame", // 当前层级子架构
		func(c *gin.Context) { htp.Service(c, &post.ListPostFrame{}) })
	gr.GET("getPostFrame", // 查询当前岗位信息
		func(c *gin.Context) { htp.Service(c, &post.GetPostFrame{}) })
	gr.POST("setPostFrame", // 修改当前岗位信息
		func(c *gin.Context) { htp.Service(c, &post.PostFrameSet{}) })
	gr.POST("switchPostFrame", // 上衣下衣
		func(c *gin.Context) { htp.Service(c, &post.SwitchPostFrameSet{}) })
}
func roleRouter(r *gin.RouterGroup) {
	gr := r.Group("role")
	gr.Use(htp.MH_JWTAuthed(mod.MH_AUTH))
	// gr.Use(permit.MH_Permit(mod.RDB(mod.ERDB_Permt), conf.Main.AdminIds()))
	gr.GET("roleList", // 角色列表
		func(c *gin.Context) { htp.Service(c, &role.RoleList{}) })
	gr.POST("addRole", // 添加角色
		func(c *gin.Context) { htp.Service(c, &role.AddRole{}) })
	gr.POST("delRole", // 删除角色
		func(c *gin.Context) { htp.Service(c, &role.DelRole{}) })
	gr.GET("getRole", // 获取单个角色信息
		func(c *gin.Context) { htp.Service(c, &role.GetRole{}) })
}
func staffRouter(r *gin.RouterGroup) {
	gr := r.Group("staff")
	gr.Use(htp.MH_JWTAuthed(mod.MH_AUTH))
	// gr.Use(permit.MH_Permit(mod.RDB(mod.ERDB_Permt), conf.Main.AdminIds()))
	gr.POST("addStaff", // 添加新入职员工
		func(c *gin.Context) { htp.Service(c, &staff.StaffAdd{}) })
	gr.POST("getStaffList", // 员工列表
		func(c *gin.Context) { htp.Service(c, &staff.StaffList{}) })
	gr.GET("getStaff", // 获取员工基本信息
		func(c *gin.Context) { htp.Service(c, &staff.StaffGet{}) })
	gr.GET("getPostList", // 岗位列表
		func(c *gin.Context) { htp.Service(c, &staff.PostList{}) })
	gr.POST("delPost", // 岗位列表
		func(c *gin.Context) { htp.Service(c, &staff.PostDel{}) })
	gr.POST("addPost", // 添加岗位
		func(c *gin.Context) { htp.Service(c, &staff.PostAdd{}) })
	gr.POST("setPost", // 编辑岗位
		func(c *gin.Context) { htp.Service(c, &staff.PostEdit{}) })
	gr.GET("getPost", // 获取单个岗位列表
		func(c *gin.Context) { htp.Service(c, &staff.PostGet{}) })
	gr.POST("setStaffOut", // 设置员工离职
		func(c *gin.Context) { htp.Service(c, &staff.SetStaffOut{}) })
	gr.POST("SetStaffOn", // 设置离职解禁
		func(c *gin.Context) { htp.Service(c, &staff.SetStaffOn{}) })
	gr.POST("setStaffIn", // 设置员工转正
		func(c *gin.Context) { htp.Service(c, &staff.SetStaffIn{}) })
	gr.GET("staffTagList", // 离职标签列表
		func(c *gin.Context) { htp.Service(c, &staff.StaffTag{}) })
	gr.GET("getBankInfo", // 离职银行卡信息
		func(c *gin.Context) { htp.Service(c, &staff.StaffBankInfo{}) })
	gr.GET("getEduInfo", // 获取员工教育信息
		func(c *gin.Context) { htp.Service(c, &staff.StaffEduInfo{}) })
	gr.POST("setStaffInfo", // 修改员工信息
		func(c *gin.Context) { htp.Service(c, &staff.StaffInfo{}) })
	gr.POST("setStaffBankInfo", // 修改员工银行卡信息
		func(c *gin.Context) { htp.Service(c, &staff.UpdateBankInfo{}) })
	gr.POST("setStaffEduInfo", // 修改员工教育信息
		func(c *gin.Context) { htp.Service(c, &staff.UpdateEduInfo{}) })
	gr.GET("staffOutDetail", // 员工离职原因记录
		func(c *gin.Context) { htp.Service(c, &staff.StaffOutDetail{}) })
}
func toolRouter(r *gin.RouterGroup) {
	gr := r.Group("tool")
	gr.Use(htp.MH_JWTAuthed(mod.MH_AUTH))
	// gr.Use(permit.MH_Permit(mod.RDB(mod.ERDB_Permt), conf.Main.AdminIds()))

	gr.POST("importStaff", // 导入员工
		func(c *gin.Context) { htp.Service(c, &staff.ExportStaff{}) })
	gr.POST("importContract", // 导入合同
		func(c *gin.Context) { htp.Service(c, &staff.ImportContract{}) })
	gr.POST("importEducation", // 导入社保
		func(c *gin.Context) { htp.Service(c, &staff.ImportEducation{}) })
}
